Archive-name: object-faq/part4 Last-Modified: 10/27/94 Version: 1.0.7 [Strachey 67] C. Strachey. Fundamental Concepts in programming languages. Lecture Notes for International Summer School in Computer Programming, Copenhagen, Aug. Contains original, classical definition of polymorphism. [Stroustrup 90] Ellis, M.A., Stroustrup. The Annotated C++ Reference Manual. Addison Wesley. The ARM; the original and definitive book on C++. Serves as the ANSI base document for C++. Also covers C++ implementation. It is meant as a reference (including for compiler writers), not as a tutorial for beginners. Perhaps a better ref is [Stroustrup 91]. [Stroustrup 91] Stroustrup, B. The C++ Programming Language (2nd edition). Has the ARM, better reference for the use of C++ (recommended by bs). Contains sections on object-oriented software engineering. [Tasker 93] Dan Tasker. The Problem Space, Practical Techniques for Gathering & Specifying Requirements. ISBN: 0-646-12524-9. Avail only from author, dant@swdev.research.otc.com.au. Object-oriented requirements definition. Hypertext. Uses Rumbaugh's OMT as a base. See also APPENDIX D. [Ungar 87] D. Ungar and R.B. Smith. The Self Papers. [Entry To Be Completed] The documents on Self; a delegation/prototyping language. Also covers Self implementation and optimization. See also APPENDIX E, PAPERS section. [Wasserman 90] A.I. Wasserman et al. The Object-Oriented Software Design Notation for Software Design Representation. IEEE Computer, 23(3). Presents the Object-Oriented Structured Design (OOSD) OOSE methodology. Traditional structured techniques to OO, hybrid containing structured design and Booch. [Wegner 87] Peter Wegner. "Dimensions of Object-Based Language Design", Proceedings of OOPSLA '87, October 4-8 1987, SIGPLAN Notices (Special Issue), V22, No 12, pp168-182, 1987. [Wikstrom 87] Ake Wikstrom. Functional Programming Using Standard ML. Prentice Hall, ISBN 0-13-331661-0, 1987. ML reference. [Wilkie 93] George Wilkie. Object-Oriented Software Engineering - The Professional Developer's Guide. Addison Wesley. Covers OOSE, 11 popular analysis and design methodologies with examples, comparisons, and analysis, information systems (OODB), and case studies. [Winter Partners] Winter Partners A proprietary toolset (OSMOSYS) for OOA and OOD. Winter Partners London Office: Zurich Office: West Wing, The Hop Exchange 24a Southwark Street Florastrasse 44 London SE1 1TY CH-8008 Zurich England Switzerland Tel. +44-(0)71-357-7292 Tel. +41-(0)1-386-95 11 Fax. +44-(0)71-357-6650 Fax. +41-(0)1-386-95 00 [Wirfs-Brock 90] Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener. Designing Object Oriented Software, Englewood Cliffs, NJ. Prentice Hall. Presents a "Responsibility Driven Design" (RDD) with "Class, Responsibility, Collaboration" (CRC) technique, a modern and new OOA/OOD methodology. [Yaoqing 93] Gao Yaoqing and Yuen Chung Kwong. A Survey of Implementations of Parallel, Concurrent, and Distributed Smalltalk. ACM SIGPLAN Notices. Vol 28, No. 9, Sept 93. Covers implementations of Parallel, Concurrent, and Distributed Smalltalk. [Yourdon 92] Edward Yourdon. Decline and Fall of the American Programmer. YPCS. Excellent coverage of modern software engineering practice and world-class software development organizations. APPENDICES ========== APPENDIX A VIPS ================ These are individuals whose names appear in comp.object most often. Please send recommendations for *major* VIPS often cited or referenced. Booch, Grady ------------------------------- Grady Booch has been an object- based/oriented advocate for some time. He's written books such as Software Engineering with Ada [Booch 87], Software Components with Ada [Booch 87b], and OOA/D with Applications [Booch 91, 94]. His latest notations are often referred to as simply the "Booch" method or notation and he is Chief Scientist at Rational, a company providing training and automated support for the method with a tool named "Rose" (See Appendix D). The Booch method now incorporates many modern methods, including OMT, and Dr. Rumbaugh has recently joined forces with Grady at Rational. Cox, Brad --------- Founder of Objective-C, which grafts the Smalltalk facilities of an Object id and a messaging mechanism onto C. Author of [Cox 87]. Goldberg, Adele (Alan Kay, Dan Ingalls) ---------------------------------------- One of the founders of Smalltalk (with Alan Kay and Dan Ingalls). Coauthor of [Goldberg 83, ??], "Smalltalk-80 The Language and its Implementation". Smalltalk was invented by a group at Xerox PARC; and a spinoff, ParcPlace, is now marketing Smalltalk environments (see APPENDIX C). Meyer, Bertrand ------------------------------------- Founder of Eiffel, author of [Meyer 88]. Often posts to comp.lang.eiffel and comp.object [what a FAQ writer notices]. His company, Interactive Software Engineering, has a case tool called EiffelCase (see APPENDIX D). Nygaard, Krysten (and Dahl, Ole-Johan) -------------------------------------- Inventor of Simula, the first object-oriented programming language. Also inventor of object oriented design, for which Simula-67 was considered an implementation technique. Now B.B. Kristensen, O.L. Madsen, B. Moller- Pedersen, and K. Nygaard are working on BETA, their successor to Simula. Rumbaugh, Dr. James ------------------- Part of Rumbaugh, Blaha, Premerlani, Eddy and Lorenson, the authors of [Rumbaugh 91]. They all work for GE Corporate Research and Development Center in Schenectady New York (See below) and have an OOA/OOD notation/methodology called the "Object Modeling Technique" (OMT). It is a rather formal and complete method often discussed in comp.object. OMTool is the name of the CASE system provided by Martin Marietta which supports OMT. See APPENDIX D. Recently, Dr. Rumbaugh has joined forces with Chief Scientist Grady Booch at Rational: Rumbaugh@rational.com Shlaer, Sally (and Mellor, Stephen J.) -------------------------------------- >Sally Shlaer sally@projtech.com >Project Technology Training and Consulting using Shlaer-Mellor OOA/RD >Berkeley, CA (510) 845 1484 Also: steve@projtech.com Cofounder of the Shlaer/Mellor OOA/RD method, president of Project Technology. As shown above, occasionally posts to comp.object [what a FAQ writer notices]. Stroustrup, Bjarne (bs@alice.att.com) ------------------------------------- Inventor of C++, a C superset, which has probably gained the most widespread use of any object-oriented language today. Often found in comp.lang.c++ and comp.object. APPENDIX B OBJECT-ORIENTED DATABASES AND VENDORS ================================================= This is a list of available Object-Oriented databases. Thanks go to Stewart Clamen, who's survey on schema evolution provided a good start. Additional short entries are encouraged; please send additions to the author of the FAQ (and/or to Stewart). The most recent copy of Stewart Clamen's summary on available databases support for schema evolution will be available indefinitely via anonymous FTP from BYRON.SP.CS.CMU.EDU:/usr/anon/OODBMS/evolution-summary. [Kim 89] covers a few of the research systems below in depth. Starred entries also have an entry in "APPENDIX E ANONYMOUS FTP SITES". See also section 3.5 for an Object Database Management Group (ODMG) reference. TABLE OF CONTENTS Extended Relational Database Model Research Systems POSTGRES* [marketed by Montage] Starburst [IBM almaden, entry NYI] Commercial Systems Montage [Research System POSTGRES] Object-Oriented Data Model Research Systems AVANCE CLOSQL ConceptBase* COOL/COCOON Encore* Exodus* Machiavelli MOOD4-PC* OBST/STONE* Ode* Oggetto Orion [marketed as ITASCA, see Entry] OTGen VODAK Commercial Systems ArtBASE EasyDB (Objective Systems, Sweden) GemStone/GeODE ITASCA Matisse NeoAccess O2 Objectivity/DB ObjectStore Ontos [formerly VBase] Odapter/OpenODB program (HP) Poet Statice UniSQL Versant Other Models Research Systems GRAS* IRIS Commercial Systems IDL Kala Pick Interfaces Research Systems Penguin Commercial Systems AllegroStore (Franz) Persistence Subtlware Synchronicity (Smalltalk) EXTENDED RELATIONAL DB MODEL ---------------------------- Research Systems ________________ > POSTGRES (Berkeley) POSTGRES is an extended-relational database manager that supports inheritance, user-defined types, functions, and operators, ad-hoc queries, time travel, a rules system, tertiary storage devices, and very large typed objects, among other things. POSTGRES speaks postquel, a derivative of the quel query language originally designed at berkeley for the ingres database system. User functions may be written in C or in postquel. C functions will be dynamically loaded into the database server on demand, and either kind of function may be executed from the query language. POSTGRES and the papers that describe it are available free of charge from toe.CS.Berkeley.EDU (128.32.149.117) in directory pub/postgres. The code is stored in a directory named after the latest release; at the time of this writing, that directory is postgres-v4r1. The list of officially-supported ports is short (decstations running ultrix 4.x and sparcstations). Unofficially, many more are supported -- people elsewhere have done the ports and distribute their versions of the code. The list of unofficial ports is available in pub/postgres as file UNOFFICIAL-PORT-LIST. On Type Evolution: You ask explicitly about type evolution. We support schema modification on all classes, including user classes. This means that you can add attributes (instance slots) and methods at any time. Further, since postgres is a shared database system, such changes are instantly visible to any other user of the class. The language syntax supports attribute deletion, but the system won't do it yet. Since all data is persistent, removing attributes from a class requires some work -- you need to either get rid of or ignore all the values you've already stored. Contact: Paul Aoki The postgres code from uc berkeley is being commercialized by Miro Systems, Inc. [This seems to have been updated to Montage] Contact: paula hawthorn (paula@miro.com) dave segleau (dave@miro.com) Commercial Systems ------------------ > Montage (ORDBMS) [Research System POSTGRES] From: markh@montage.com (Mark Helfen) Subject: Montage Database - brief product announcement Followup-To: sales@montage.com Organization: Montage Software, Inc. Date: Wed, 10 Nov 1993 23:05:03 GMT The Montage object-relational database management system (ORDBMS) is now available from Montage Software, Inc. The Montage object-relational database management system includes the Montage Server(tm) database engine, the Montage Viewer(tm) -- a new visualization tool that simplifies queries of complex data -- and Montage DataBlades(tm), specialized modules that extend the capabilities of the database for specific applications. Montage represents the commercialization of the seven-year POSTGRES research project. The Montage Server extends the relational database model through its ability to handle complex information, and the inclusion of object- oriented facilities and capabilities. It uses the familiar relational row- column metaphor for all data, so that text, numbers and complex data are all viewed, managed, manipulated and queried the same way. The relational metaphor is extended to allow data of any size and complexity to be stored and accessed in the way that is most effective. SQL, used to access and manage data, is extended with SQL3-based capabilities to allow the definition of user data types and functions. The Montage Viewer uses visualization technology to organize information in visual terms -- by location, shape, color and intensity, for example. Similar to a "flight simulator," the Montage Viewer allows the user to visually navigate through data, refining each step by "panning" and "zooming" with a mouse. A DataBlade is a combination of data types and functions that are designed to support a specific application. Text, Spatial, and Image are the first of many DataBlades that will comprise a full-range of industry-specific products created by Montage, third parties and users based upon their own expertise. o The Text DataBlade expands the database's functionality by adding new data types and functions that manage text and document libraries, as well as a providing a new access method (Doc-Tree) which provides exceptional search performance for text. o The Image DataBlade supports image conversion, storage, manipulation, enhancement and management of more than 50 image formats, and performs automatic conversion of formats at the user's discretion. o Points, lines, polygons and their spatial relationships are now supported in the relational model with the Spatial DataBlade. The DataBlade defines nine basic spatial types and makes over 200 SQL functions available for use on spatial data, as well as supports the R-Tree access method for high speed navigation of spatial data. Montage Software was co-founded by Gary Morgenthaler of Morgenthaler Ventures and Dr. Michael Stonebraker of the University of California, Berkeley, . Morgenthaler is Montage Software's chairman of the board and Stonebraker serves as the company's chief technology officer. Morgenthaler and Stonebraker co- founded Ingres Corporation (then called Relational Technology, Inc.), in 1980. FOR ADDITIONAL INFORMATION: Montage Software Inc. can be contacted at: email: sales@montage.com phone: (510) 652-8000 fax: (510) 652-9688 Mailing Address: Montage Software, Inc. 2000 Powell Street, Suite 1405 Emeryville, CA 94608 OO DATA MODEL ------------- Research Systems ________________ > AVANCE (SYSLAB) An object-oriented, distributed database programming language. Its most interesting feature is the presence of system-level version control, which is used to support schema evolution, system-level versioning (as a way of improving concurrency), and objects with their own notion of history. System consists of programming language (PAL) and distributed persistent object manager. REFERENCES: Anders Bjornerstedt and Stefan Britts. "AVANCE: An Object Management System". Proceedings of OOPSLA88. > CLOSQL (University of Lancaster) Status:- CLOSQL is a research prototype OODB designed primarily for prototyping various schema evolution and view mechanisms based on class versioning. The system is built using CommonLISP. It would really only be of interest to other parties as a research tool. Requirements:- Common LISP including CLOS standard. The Graphical user interface requires the Harlequin LispWorks Tool-kit. The system was built on a Sun4 and has not been tested on any other platform. Features:- As a prototype, CLOSQL is not robust enough to sell. The system is single user and does not properly support persistence - that is, the data has to be loaded and saved explicitly. The query language is quite good making good use of the functional nature of the environment. Methods (LISP and query language only), class versioning and multiple inheritance are all supported in the data model. Type checking information is held in the database, but is NOT enforced at present. The GUI is notable for its support for schema evolution, but otherwise rather ordinary. Availability:- Probably freely available, but as the project was part funded by an industrial partner, some consultation with them would be necessary before the system could be released. References:- [1] Monk, S. R. and I. Sommerville, "A Model for Versioning of Classes in Object-Oriented Databases", Proceedings of BNCOD 10, Aberdeen. pp.42-58. 1992. [2] Monk, S. "The CLOSQL Query Language". Technical report No. SE-91-15. Computing Dept, Lancaster University, Lancaster, LA1 4YR, UK. 1991. [3] Monk, S., "A Model For Schema Evolution In Object-Oriented Database Systems", PhD thesis, Dept of Computing, Lancaster University, Lancaster LA1 4YR, UK. 1992. On Schema evolution (from original survey): CLOSQL implements a class versioning scheme (like ENCORE), but employs a conversion adaptation strategy. Instances are converted when there is a version conflict, but unlike ORION and GemStone, CLOSQL can convert instances to older versions of the class if necessary. Aberdeen, Scotland. July, 1992. Contacts; Simon Monk: srm@computing.lancaster.ac.uk Ian Sommerville: is@computing.lancaster.ac.uk > ConceptBase - A Deductive Object Manager for Meta Data Bases ConceptBase is a multi-user deductive object manager mainly intended for conceptual modeling and the coordination of design environments. The system implements a dialect of Telos which amalgamates properties of deductive and object-oriented languages. Key features are hybrid representation with frame-like objects, semantic nets and logical specifications unlimited extensibility by metaclass hierarchies (useful for IRDS, schema evolution etc.) deductive rules & integrity constraints queries as classes with membership constraints persistent object management with the ability to interrogate past states of the database ConceptBase follows a client-server architecture. Client programs can connect to the ConceptBase server and exchange data via interprocess communication. The X11-based ConceptBase user interface offers a palette of graphical, tabular and textual tools for editing and browsing the object base. The ConceptBase programming interface allows the users to create their own client programs in C or Prolog. The system can be obtained for free from ftp.informatik.rwth-aachen.de in /pub/CB/CB_3.2.4 (released 26-Apr-1994 for Sun/SPARC, SunOS 4.1.3) /pub/CB/CB_3.3 (released 26-Apr-1994 for Sun/SPARC, Solaris 2.3) Both versions are functionally equivalent. They only differ in the operating system platform.Please read file /pub/CB/doc/InstallationGuide (resp. /pub/CB/doc/InstallationGuide_3.2.4) before downloading the software. For running the ftp version you must ask for a key by email. Contact ConceptBase-Team RWTH Aachen - Informatik V D-52056 Aachen - Germany Tel./Fax: +49-241 80 21 501 / +49-241-8888321 email: CB@picasso.informatik.rwth-aachen.de href="http://www.informatik.rwth-aachen.de/I5/CBdoc/cbflyer.html" > COOL/COCOON (Ulm Universitaet) The COCOON project was intended to extend the concepts and the architecture of relational database management systems (DBMSs) beyond nested relational to object-oriented ones. Based upon the nested relational DBMS kernel DASDBS, we have built a prototype implementation of the COCOON model. Key characteristics of COCOON are: generic, set-oriented query and update operators similar to relational algebra and SQL updates, respectively; object-preserving semantics of query operators, which allows for the definition of updatable views; a separation of the two aspects of programming language "classes": type vs. collection; predicative description of collections, similar to "defined concepts" in KL-One--like knowledge representation languages; automatic classification of objects and views (positioning in the class hierarchy); physical clustering of subobjects via the use of nested relations as the internal storage structures; support for the optimization of both, the physical DB design and query transformation, by corresponding optimizers. Project goals are: - to develop a general formal framework for investigations of all kinds of schema changes in object-oriented database systems (including schema design, schema modification, schema tailoring, and schema integration); - to find implementation techniques for evolving database schemas, such that changes on the logical level propagate automatically to adaptations of the physical level (without the need to modify all instances, if possible). In their current paper [see below], schema evolution is used as example of a general framework for change in OODBs, supporting change on three levels of database objects: data objects, schema objects, and meta-schema objects. Contact: Markus Tresch REFERENCES: M. Tresch and M.H. Scholl. "Meta Object Management and its Application to Database Evolution." In _Proceedings of the Eleventh International Conference on the Entity-Relationship Approach", Karlsruhe, Germany, Oct 1992. Springer Verlag (to appear). > Encore (Brown University) email:bpe@browncs.brown.edu Encore is an object-oriented database system targeted at large scale software engineering applications which are involved in data modeling. It was developed at Brown University in the late 1980s. It is notable for its special support for long-lived (ie. cooperative) transactions, popular in design applications, and its support for class versioning. Objects are never converted, rather, classes are versioned, and the user can specify filters to make old-style instances appear as new instances to new applications (and vice versa). References/Additional Information: [] Mary F. Fernandez. OBSERVER: A storage system object-oriented applications. Technical Report CS-90-27, Brown University, Providence, RI, 1990. [] Mark F. Hornick and Stanley B. Zdonik. A shared, segmented memory system for an object-oriented database. ACM Transactions on Office Information Systems, 5(1):70--95, January 1987. [] Andrea H. Skarra and Stanley B. Zdonik. Type evolution in an object-oriented database. In Research Directions in Object-Oriented Programming, MIT Press Series in Computer Systems, pages 393--415. MIT Press, Cambridge, MA, 1987. An early version of this paper appears in the OOPSLA '86 proceedings. [] Andrea H. Skarra and Stanley B. Zdonik. Concurrency control for cooperating transactions in an object-oriented database. In Won. Kim and Frederick H. Lochovsky, editors, Object-Oriented Concepts, Databases and Applications. Addison-Wesley, Reading, MA, 1989. FTP: Complete source can be found in wilma.cs.brown.edu/pub/encore.tar.Z See also APPENDIX E. > Exodus (University of Wisconsin) EXODUS is a DBMS from the University of Wisconsin. An overview, excerpted from the abstract of [CDG+90] reads: EXODUS, an extensible database system project that is addressing data management problems posed by a variety of challenging new applications. The goal of the project is to facilitate the fast development of high-performance, application-specific database systems. EXODUS provides certain kernel facilities, including a versatile storage manager. In addition, it provides an architectural framework for building application-specific database systems; powerful tools to help automate the generation of such systems, including a rule-based query optimizer generator and a persistent programming language; and libraries of generic software components (e.g., access methods) that are likely to be useful for many application domains. The programming language is called E, an extension of C++. [RC89] REFERENCES: (see "ftp.cs.wisc.edu:exodus/bibliography" for a complete list) [CDG+90] Michael J. Carey, David J. DeWitt, Goetz Graefe, David M. Haight, Joel E. Richardson, Daniel T. Schuh, Eugene J. Skekita, and Scott L. Vandenberg. The EXODUS extensible DBMS project: An overview. In Stanley B. Zdonik and David Maier, editors, Readings in Object-Oriented Database Systems, Data Management Series. Morgan Kaufmann, San Mateo, CA, 1990. Also available as WISC-CS-TR 808. [CDRS89] Michael J. Carey, David J. DeWitt, Joel E. Richardson, and Eugene J. Skekita. Storage management for objects in EXODUS. In Won. Kim and Frederick H. Lochovsky, editors, Object-Oriented Concepts, Databases and Applications, chapter 14. Addison-Wesley, Reading, MA, 1989. After Carey et al. Object and File Management in the EXODUS Database System, Proceedings of the Twelveth International Conference on Very Large Data Bases, 1986. [GD87] G. Graefe and D. DeWitt. The EXODUS optimizer generator. In U. Dayal and I. Traiger, editors, Proceedings of the SIGMOD International Conference on Management of Data, San Francisco, CA, May 1987. [RC89] Joel E. Richardson and Michael J. Carey. Persistence in the E language: Issues and implementation. Software -- Practice and Experience, 19(12):1115--1150, December 1989. FTP: source code, documentation and a complete bibliography can be found at ftp.cs.wisc.edu:exodus/ See also APPENDIX E. On Schema Evolution (from original survey): No solution for the problem of schema evolution is provided. Emulation is rejected by the authors, who claim that the addition of a layer between the EXODUS Storage Manager and the E program would seriously reduce efficiency. Automatic conversion, whether lazy or eager, is also rejected, as it does not mesh well with the C++ data layout. To implement immediate references to other classes and structures, C++ embeds class and structure instances within its referent. The resulting change in the size of the object might invalidate remote pointer references. Joel E. Richardson and Michael J. Carey. "Persistence in the E language: Issues and Implementation." Appeared in "Software -- Practice and Experience", 19(12):1115-1150, December 1989. > Machiavelli (University of Pennsylvania) Machiavelli is a statically-typed programming language developed at the University of Pennsylvania. Its most outstanding innovation is the use of conditional typing scheme in its type inference system. It does not address type evolution. [communication with limsoon@saul.cis.upenn.edu] [Note: Machiavelli is included in this summary because it previously incorporated persistence in its data model.] > MOOD4-PC: Material's/Miniature Object-Oriented Database Prototype for NEC/IBM-PC is an object-oriented database system(OODBS) program developed in the course of our research project MOOD. The aim of the project MOOD is to develop a material database system to handle raw material data which are produced and accumulated in materials research and referred to by material experts when they face scientific or engineering problems where the expected behavior of particular materials in particular environments are crucial importance. We all know that the conventional database systems do not fulfill this requirement, though they serves well for bibliographic databases or fact databases which deals with the standard properties of standard materials. MOOD4-PC is written in Arity/Prolog and available in source and executable form via anonymous ftp from: ~/pub/mood/mood4 at mood.mech.tohoku.ac.jp [130.34.88.61] ~/pub/database/mood at ftp.uu.net [192.48.96.9] ~/pub/computing/databases/mood at src.doc.ic.ac.uk [146.169.2.1] Although it is true enough to say that MOOD4 is a general purpose OODBS, it may be appropriate to point out that MOOD4 is significantly different from what is generally meant by the term, the Object-Oriented Database System. That is, OODBSs, in general, consist of two parts: (1) Disk storage manager (2) Database language to define and manipulate data objects to be stored to and retrieved from the disk. The database language of OODBS is akin to the object-oriented programming language such as Smalltalk or C++. You can enjoy the full versatility of these general purpose programming language in writing application programs with the database language. As apparent from these, OODBSs, in general, are for programmers who write application programs which serve end users' needs. MOOD, on the other hands, is not; it is for end users. It is provided with a user interface named the object editor or OE in short. With OE, we can; (1) Edit class definition objects and save them. This replaces the data definition language. (2) Edit data objects and save them. (3) Create query objects, let the system select data objects which match the queries, and browse them. In the other words, we can do everything necessary to manage and use database with OE. MOOD, therefore, needs no programming language and, in fact, has none. In this regard, MOOD may better be categorized to the OODBS application. The architecture of MOOD as such is the consequence of the nature of information to be dealt with in material database. If we describe the nature with a single word, "variety" will be the one most appropriate. No fixed data structure can handle a handful of material data because their contents differ from one to another. The feature of OODBS relevant here is not the intimacy with programming languages but the flexibility of data structure which allows us to construct data objects with a variety of structures which match the variety in the information to be dealt with. Upon inputting and retrieving data objects, end users are forced to face this variety in data structure since significant information is born in the structures of individual representations. Yet, we say that MOOD is a general purpose OODBS. This is not in the sense that we can develop application programs on it, but in the sense that it generally supports the essential capabilities of OODBS; (1) The abstract data type. (2) The nesting of structured data objects. (3) The class hierarchy. (4) The inheritance of attributes along the hierarchy. (5) Matching between objects along their structures with the knowledge of the class hierarchy. For additional features of MOOD4, please consult its manual available with the program. Although they are biased to the processing of material data (or, more generally, scientific and technical data), MOOD with these capabilities can be used in any application domain at least by the stage where you are to examine how well the pieces of information of interest are represented in OODBS and how well specific items of interest are discriminated out from the database as such. Questions and suggestions on this software which are ever welcome indeed may be addressed to; Noboru Ono Dept. of Machine Intelligence and Systems Engineering, Faculty of Engineering, Tohoku University. Tel:++22-216-8111, Fax:++22-216-8156, E-mail:ono@mood.mech.tohoku.ac.jp > OBST/STONE (Forschungszentrum Informatik [FZI], Karlsruhe, Germany) OBST3-4 is now available at ftp.fzi.de under /pub/OBST/OBST3-4. (Please do not confuse this new release with the older OBST3-3.4). Experienced users will notice that we've changed the structure of our ftp directory tree somewhat: compressed and gzip'ed files are now cleanly separated. By sending echo 'info ftp_listing' | mail obst-listserv@fzi.de you will get a directory listing from our ftp server. OBST3-4 is a major release with a new meta schema interface that enables schema modifications. A graphical schema browser (USE) based on tclOBST is now also available. Please note that this new tool has not yet been tested outside the FZI and that it is currently not part of the OBST core cdistribution. Beside bug fixes and performance improvements, we have added support for IBM AIX and FreeBSD and improved the installation on LINUX PCs. We would like to thank all OBST users who have helped us by testing a beta version of OBST, most notably: Naresh Sharma (N.Sharma@LR.TUDelft.NL) Michael Reifenberger (root@rz-wb.fh-sw.de) Hans-Ulrich Kobialka (kobi@borneo.gmd.de) Jean Safar (jsafar@lehman.com) Gabor Karsai (gabor@vuse.vanderbilt.edu) Stefan Bohm (bohm@math.uni-muenster.de) The installation of OBST requires a C++ compiler (GNU g++ 2.3.3/2.4.5/2.5.8, or AT&T 2.1/3.01). The OBST graphical tools run under the X-Windows system (currently X11R4, X11R5 and X11R6). Installation has been tested for SunOS4.1.3 and LINUX only. Best regards and happy OBST programming. The OBST Team ------------------------------------------------------------------------------ README of OBST3-4 ----------------- Version: OBST3-4 Date: 11/4/94 The OBject system of STONE --- OBST ----------------------------------- The persistent object management system OBST was developed by Forschungszentrum Informatik (FZI) as a contribution to the STONE project (supported by grant no. ITS8902A7 from the BMFT, i.e. the German Ministry for Research). OBST was originally designed to serve as the common persistent object store for the tools in software engineering environments. Data Model --------- The OBST data model can be characterized by the following properties: * Schema definition language syntactically similar to C++ * Support of multiple inheritance * Generic classes * Abstract classes and methods * Distinction between public, protected, and private methods * Redefinition of methods * Overloading of methods Schemas and Containers ---------------------- Schemas are compiled by the OBST schema compiler. The compilation results are instances of classes of the meta schema. From these instances in a next step interfaces to different programming languages can be generated. At present the C++ language binding is implemented. Objects are stored in so-called containers. The container an object belongs to is determined at the time of object creation and fixed throughout the object's lifetime. Containers are the units of clustering, synchronization, and recovery. Objects can be referenced by other objects across container boundaries. Incremental Loading ------------------- OBST provides a mechanism to incrementally load methods. This enables programs to deal with objects whose type is defined after the program itself has been developed. This is useful in systems that provide for inheritance and it supports schema evolution. We used it e.g. for programs that interpret the object base and call methods of the found objects (for example the below mentioned browser). Prototype --------- Since end 1990 the first prototype of OBST is available and is shipped to interested universities and research institutions. The current version is publicly available via FTP (see below) since March '92. There is a mailing list (see below) with >>100 subscribers. The system comes with the schema compiler, a library of predefined classes (like Set, List, String, ...), a graphical object browser (more a shell than a browser), a graphical schema designer (USE), the structurer and flattener (STF), tclOBST, and all manuals. For USE, STF and tclOBST see below. Schema Evolution Support Environment (USE) ------------------------------------------ This environment consists of a graphical schema designer built with tclOBST (see below). It can be used to inspect existing class hierarchies and to modify these hierarchies; it allows the addition of new classes as well as the modification of existing ones. Structurer and Flattener (STF) ------------------------------ This is a tool to build objects from bytestrings and flatten objects down to bytestrings. It is intended to be used when coupling UNIX tools to the object management system. The user defines a grammar that describes her objects. Afterwards, the structurer parses an ascii text according to the given grammar and creates an OBST object structure that represents the corresponding parse tree. The flattener does the inverse transformation, that means it generates an ascii text from a given OBST object structure according to the given grammar. tclOBST ------- tclOBST is a library which provides an embedding of OBST into the interactive tool command language tcl, developed by John Ousterhout at the University of Berkeley. Based on the standard tcl shells, which are also comprised in the tclOBST distribution, tclOBST offers interactive access to the complete functionality modelled by OBST schemata. System Requirements ------------------- For the prototype's installation a C++ compiler (GNU g++ 2.3.3/2.4.5/2.5.7 or AT&T 2.0/2.1/3.01) and the X-Windows system (currently X11R4 or X11R5) for the graphical tools are required. Installation is well-tried on SUN Sparc stations and should be no problem on other UNIX machines, too. You can find a more detailed description of the supported platforms in the README.install.OBST*. -------------------------------------------------------------------- For more information please mail to: Forschungszentrum Informatik (FZI) OBST Projekt Haid-und-Neu-Strasse 10-14 D-76131 Karlsruhe Germany or email to: obst@fzi.de Phone: ++49-721-9654-701 Fax: ++49-721-9654-709 Teletex: 721 190 fziKA The OBST system is available via anonymous FTP from ftp.fzi.de [141.21.4.3] and some mirror servers. The system as well as some overview papers, documentation (User's Guide, Language Reference Manual, Tutorial, ...), and lots of manual pages can be found in the directory /pub/OBST. There are mailing lists for announcing OBST enhancements, new versions, porting hints, etc. as well as for exchanging experiences with other OBST users. Send a mail with content 'LONGINDEX' to obst-listserv@fzi.de to learn about the mailing lists which are currently installed: echo LONGINDEX | mail obst-listserv@fzi.de The mailing lists are maintained by an automatic list processor. Use 'HELP' to learn about the commands understood by this processor: echo HELP | mail obst-listserv@fzi.de Bug reports should contain a small example program with which the bug can be reproduced, or at least a detailed description of the observed phenomenon. They should also mention: o OBST version o configuration parameters for your OBST version (from file config.status) o kind and version of C++ compiler o machine o operating system Besides bug reports we are strongly interested in all experiences our users make with OBST (e.g. sufficiency of data model, performance, ...) and in our users' application areas and the applications as well. So, please don't hesitate to send us a short note. Best regards and happy OBST programming. The OBST Team, Boris Boesler, Dirk Eichberg, Frank Fock, Axel Freyberg, Michael Gravenhorst, Ingolf Mertens, Michael Pergande, Christian Popp, Bernhard Schiefer, Dietmar Theobald, Axel Uhl, Walter Zimmer --- BTW "Obst" is the German word for "fruit", so have a fruitful time with OBST! > Ode Ode 2.0 An Object-Oriented Database C++ Compatible, Fast Queries, Complex Application Modeling, Multimedia Support, and more See APPENDIX E, Databases, for description. Note: Ode version 3.0 is now available. > Oggetto, University of Lancaster, UK. Developed at the University of Lancaster, UK. Summary NYI. "Oggetto: An Object Oriented Database Layered on a Triple Store", J.A. Mariani, The Computer Journal, V35, No 2, pp108-118, April 1992. > ORION (Now marketed as ITASCA) ORION was a prototype OODBMS developed at MCC, an American consortium by Won Kim and his group. Won Kim has left MCC and formed a new company, UniSQL, in Austin, with a new product of the same name. See also entry under "ITASCA". REFERENCES: I have found nearly a dozen papers published by the ORION folks. Overviews at various stages in its development and commercialization can be found in: [KBGW91] Won Kim, N. Ballou, J.F. Garza, and D.; Woelk. A distributed object-oriented database system supporting shared and private databases. ACM Transactions on Information Systems, 9(1):31--51, January 1991. [KGBW90] W. Kim, J.F. Garza, N. Ballou, and D. Woelk. Architecture of the orion next-generation database system. IEEE Transactions on Knowledge and Data Engineering, 2(1):109--24, March 1990. [KBCG89] Won Kim, Nat Ballou, Hong-Tai Chou, and Darrell Garza, Jorge F. Woelk. Features of the ORION object-oriented database system. In Won. Kim and Frederick H. Lochovsky, editors, Object-Oriented Concepts, Databases and Applications, chapter 11. Addison-Wesley, Reading, MA, 1989. [KBC+88] Won Kim, N. Ballou, Hong-Tai Chou, J.F. Garza, D. Woelk, and J. Banerjee. Integrating an object-oriented programming system with a database system. In Proceedings of the ACM Conference on Objected-Oriented Programming: Systems, Languages and Applications (OOPSLA), pages 142--152, San Diego, CA, September 1988. Published as ACM SIGPLAN Notices 23(11). [Pointers to the previous papers documenting each of the advanced features listed above are cited therein.] The paper most relevant to the issue of schema evolution is the following: [BKKK87] J. Banerjee, W. Kim, H-J. Kim, and H.F. Korth. Semantics and implementation of schema evolution in object-oriented databases. In U. Dayal and I. Traiger, editors, Proceedings of the SIGMOD International Conference on Management of Data, San Francisco, CA, May 1987. You might also like to look at Kim's book, which provides a good introduction to OODBMS, while focusing on the ORION work: [Kim90] Won Kim. Introduction to Object-Oriented Databases. Computer Systems. MIT Press, Cambridge, MA, 1990. > OTGen (Carnegie Mellon University/UMass Amherst) OTGen is a design for a system to support schema evolution in object-oriented databases. The chief contribution of OTGen is support for programmer extensibility of transformation functions to allow a system to support a wide range of schema changes, not just those that can be easily automated. While OTGen was never implemented, it is based on the implementation of TransformGen, a system to support the evolution of the specialized databases used by Gandalf programming environments. For more information on OTGen and TransformGen, please see: Barbara Staudt Lerner and A. Nico Habermann, "Beyond Schema Evolution to Database Reorganization", in Proceedings of the Joint ACM OOPSLA/ECOOP '90 Conference on Object-Oriented Programming: Systems, Languages, and Applications, Ottawa, Canada, October 1990, 67-76. Barbara Staudt, Charles Krueger, and David Garlan, TransformGen: Automating the Maintenance of Structure-Oriented Environments, Computer Science Department Carnegie-Mellon University, Technical Report CMU-CS-88-186, November 1988. David Garlan, Charles W. Krueger, and Barbara J. Staudt, "A Structural Approach to the Maintenance of Structure-Oriented Environments", in Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, Palo Alto, California, December 1986, 160-170. Contact: Barbara Lerner blerner@cs.umass.edu > VODAK Research in the framework of VODAK focuses on an extensible data model and database programming language, an advanced transaction model, object-oriented query language, and support for multimedia data. The VODAK Data Model Language VML Usually database models lack mechanisms for extending them with additional modeling primitives. This limitation does not allow the adaptation of the models for specific application needs, e.g. database integration, multimedia document handling, hypertext modeling, etc. The VODAK Model Language VML homogeneously integrates the concept of metaclasses and the separation of types and classes with other object-oriented concepts such as properties, methods, inheritance, and object identity. Complex nested data structures can be defined using the set, array, tuple, and dictionary type constructors. VML supports its own programming language for implementing methods, specifying transactions and an ad hoc query language. In VML classes are used to organize a set of objects corresponding to real world entities and relationships between them. Object types define the structure of objects and the operations defined on these structures. They are associated with classes in order to determine the structure and behavior of the class' instances. Metaclasses are first class objects whose instances are classes. Metaclasses are associated with three object types: an (optional) own-type extending their own behavior, an instance-type specifying the behavior of their instances (which are classes), and an instance-instance-type specifying the behavior of the instances of their instances. Metaclasses can be organized in an instantiation hierarchy of arbitrary depth. This approach leads to an open, adaptable data model which provides for the specification of additional modeling primitives at a meta layer of the database schema. The concept of metaclasses and the separation of classes and types allow to determine the structure and behavior of objects and the individual inheritance behavior via semantic relationships between arbitrary objects already at the meta layer independently from the specifications given at the application layer for the application specific classes. The VODAK Transaction Model In VODAK, we focus on two specific problems of transaction management. 1. Operations to read and edit (hyper)documents are typically complex, interactive and of long duration. A high degree of concurrency is required to reduce the number and length of times a transaction is blocked. 2. A publication environment has to handle existing database systems for using and modifying remote information and documents. Transaction managers of existing systems, i.e. concurrency control and recovery, have to be integrated in a transparent way utilizing the functionality of existing managers. Our transaction model is based on open nested transactions. Compared to conventional flat transactions, nested transactions allow more concurrency and are more flexible for recovery. A nested transaction is a tree-like structure, dynamically built up by the call of subtransactions until a bottom implementation level is encountered. We extended the open nested model from a fixed calling hierarchy of operations in a layered system (multi-level transactions) to an arbitrary calling hierarchy of operations in an object-oriented system. Commutativity of operations is applied to system defined VODAK methods, and to methods of user defined object types. For the second type of operations, we developed a framework to specify commutativity and inverse operations in VML. Query Processing Although nearly all object-oriented data models proposed so far include behavioral aspects, most object-oriented query languages, algebras and query optimization strategies simply adapt relational concepts since they focus on the complex structures of objects and neglect the behavior. We claim that this approach is not sufficient since it does not reflect the much richer semantics methods can carry which have to be taken into account for really efficient query processing. The quite straightforward approach we consider is to integrate methods in an algebraic framework for query processing and to make there partial knowledge about methods available in the form of equivalences. We integrate algebraic set operators with methods defined in database schemas within an object-oriented data model. We investigate the impact on the architecture of the query processor when the algebra becomes an extendible component in query processing. Multimedia Support The V3 Video Server was built as a demonstration showing a multimedia application developed on top of the VODAK database management system. The V3 Video Server allows a user to interactively store, retrieve, manipulate, and present analog and short digital video clips. A video clip consists of a sequence of pictures and corresponding sound. Several attributes like author, title, and a set of keywords are annotated. In the future, the VODAK DBMS will be enhanced with new built-in functionality for multimedia datatypes. Therefore, existing components of VODAK must be changed and new ones must be added to support time dependencies, high data volumes, and user interaction. Query Processing Although nearly all object-oriented data models proposed so far include behavioral aspects, most object-oriented query languages, algebras and query optimization strategies simply adapt relational concepts since they focus on the complex structures of objects and neglect the behavior. We claim that this approach is not sufficient since it does not reflect the much richer semantics methods can carry which have to be taken into account for really efficient query processing. The quite straightforward approach we consider is to integrate methods in an algebraic framework for query processing and to make there partial knowledge about methods available in the form of equivalences. We integrate algebraic set operators with methods defined in database schemas within an object-oriented data model. We investigate the impact on the architecture of the query processor when the algebra becomes an extendible component in query processing. The VODAK Prototype The system architecture consists of a central database environment and several external database environments to which the user wants to have integrated access. Each of these environments consists of an object manager, a message handler, a transaction manager, and a communication manager. In addition to these components an external database environment includes a database interface module which realizes the access to an external database system. The DBMS components are currently built on top of DAMOKLES and will be in the near future on top of ObjectStore. A first version of a C++ based prototype of VODAK is available for Sun Sparc Stations under certain conditions. It implements all the features specified in including e.g. metaclasses, transactions, and remote message execution. References P. Muth, T. Rakow, W. Klas, E. Neuhold: A Transaction Model for an Open Publication Environment. A. K. Elmagarmid (Ed.): Database Transaction Models for Advanced Applications. Morgan Kaufmann Publishers, San Mateo, Calif., 1992. Wolfgang Klas, Karl Aberer, Erich Neuhold Object-Oriented Modeling for Hypermedia Systems using the VODAK Modeling Language (VML) to appear in: Object-Oriented Database Management Systems, NATO ASI Series, Springer Verlag Berlin Heidelberg, August 1993. Karl Aberer, Gisela Fischer Object-Oriented Query Processing: The Impact of Methods on Language, Architecture and Optimization Arbeitspapiere der GMD No. 763, Sankt Augustin, July 1993. T.C. Rakow, P. Muth The V3 Video Server: Managing Analog and Digital Video Clips, Sigmod 93, Washington, DC. For further information contact {aberer,muth,rakow,klas}@darmstadt.gmd.de GMD-IPSI Dolivostr. 15 D-64293 Darmstadt GERMANY FAX: +49-6151-869 966 Commercial Systems __________________ > ArtBASE (Object-Oriented Data Model) by: ArtInAppleS Ltd. Kremelska 13 845 03 Bratislava SLOVAKIA Phone: x42-7-362-889 fax: x42-7-777 779 EMail: artbase.support@artinapples.cs Distributor for Germany: ARS NOVA Software GmbH Stettener Strasse 32/3 73732 Esslingen a.N. Germany Phone: x49-711 3704001 Fax: x49-711 3704001 EMail: info@arsnova.stgt.sub.org Languages: Objectworks\Smalltalk by ParcPlace Systems, Inc. Platforms: Unix, PC Windows, Macintosh Features: - Fully implemented in Objectworks\Smalltalk (ArtBASE is delivered with source code) - ArtBASE extents Smalltalk of persistency. Persistent objects are handled the same way as transient objects. - Optimistic and pessimistic concurrency control. - Transactions, including long lived transactions - User concept with access restrictions - storing of classes and methods in the database - entire applications may be stored in an ArtBASE database, including the data AND the application classes - Currently, a single user version is available. The Distributed Multi User Server Version will be presented at the OOPSLA'93 at Washington D.C. in September 1993 for Unix environments and PCs. - Existing applications can be turned to database applications very easily using ArtBASE > EasyDB (Objective Systems, Sweden) EasyDB features a (programming language independent) Data Definition Language (DDL) for the definition of schemas. It relies on the Entity-Attribute-Relationship model. Data Manipulation Languages (DML) include a Navigational Query language (NQL) embedded in a host language (C available now, Ada in January '93), and a generic C++ class library. On Schema Evolution (from original survey): The schema may be freely extended with new items (types, domains, attributes, entities, relationships etc.). Deletion of items is not allowed. Data created with an older schema may co-exist with newer data. Old applications need not be recompiled when the schema is updated. Attempts by newer applications to access `older' data in an inconsistent way are detected and reported via an exception handling system. [Tomas Lundstrom ] Objective Systems SF AB (Ericsson) Box 1128 S-164 22 Kista, Sweden tel : +46-8-703-4591 fax : +46-8-750-8056 contact: Jaan Habma, jaan@os.se > GemStone (Servio) First introduced in 1987, Servio's GemStone is the oldest commercial ODBMS available today. GemStone is particularly well suited for use in complex multi-user, multi-platform client/server applications. It supports concurrent access from multiple external languages, including Smalltalk-80, Smalltalk/V, C++ and C. GemStone also provides a dialect of Smalltalk as an internal DML, which can execute methods or entire applications in the database. Servio also offers GeODE (GemStone Object Development Environment), an object database application development environment which allows developers to build complete object applications visually, without writing code. With GeODE's visual programming tools, programming an application is a matter of wiring together graphical representations of encapsulated code blocks. A simple extension mechanism promotes the re-use of code, thereby increasing the speed of program development. Also, association of application user interface elements with database objects is established through simple graphical tools. GeODE applications are stored and run in the GemStone database, and so are both self-porting and network-aware, and can be accessed externally from any of the GemStone language interfaces. Because of GemStone's network architecture, Geode applications can operate easily in a client/server environment. ============================================================================== GEMSTONE GemStone is a highly scalable client-multiserver database for commercial applications. GemStone's features include: o Active Database -- GemStone allows database application developers to write methods which are stored and executed directly in the database. These methods can be accessed either internally, or from external client applications. This can significantly reduce network traffic and allow applications to take advantage of the superior compute power of the server. This also eliminates the need to rebuild and re-deploy applications whenever application or business processing rules change. This in turn allows for centralized code development and management, architecture-independent code that ports itself to new platforms, reduced network usage, and true client/server applications that share compute load between client and server machines. o Concurrent Support for Multiple Languages -- GemStone provides concurrent support for applications developed in Smalltalk, C++, C or GeODE. All applications, regardless of language, can have simultaneous access to the same database objects. o Flexible multi-user transaction control -- Multiple users can operate in the database simultaneously, with a variety of transaction control modes available. o Object-level security -- Authorization control can be applied to any object in the database, allowing for fine tuning of object security. o Dynamic schema and object evolution -- GemStone supports schema modification through class versioning and allows full migration of objects between versions of their classes with a simple message send. Migration is fully customizable and is undoable. o Production Services -- GemStone delivers the full suite of features required in any production-ready networked database including online backup, rapid recovery, referential integrity, sophisticated concurrency control, and event signals and notifiers. o Scalability -- In a recent independent benchmark, GemStone scaled to support more than 1,000 simultaneous log-ins and 100 concurrent active users on a mid-sized SMP server. o Legacy Gateways -- GemStone incorporates gateways or data bridges that allow object applications to integrate legacy data, whether in SQL, IMS, VASM or other formats. The level of integration between GemStone and legacy data and applications can range from simple query access to extensive read-write interoperability. ============================================================================== GEODE GeODE is a comprehensive environment for rapidly designing, building and deploying production-quality commercial object applications. Its design promotes code reuse in a team programming environment for increased productivity. GeODE consists of six main elements: o Visual Application Manager -- Provides centralized management of each application and its component parts, and a namespace for addressing known objects. o Visual Schema Designer -- Allows the development of database schema visually, making the process more interactive and intuitive than with object-oriented programming languages. It also provides analysis tools for examining an existing schema. o Visual Forms Designer -- The Forms Designer reads GemStone class definitions and an associated data dictionary to automatically create default forms suitable for simple data entry. These forms can be rapidly customized, using a wide selection of user interface components and field types, which include image and sound support, and a large set of form design aids. The list of field types can be extended interactively.